package com.AI.AIDemo.Demos.Web.Entity;

import lombok.Data;
import org.dromara.easyai.i.OutBack;

import java.util.Map;

/**
 * @author 大力王
 * {@code @date} 2025/4/28 16:19
 * 父亲输入神经元实体类
 * 开始了
 */
@Data
public class FatherInputNeuronEntity {
    /**
     * 是一个线程安全ID
     */
    public static long eventId = 13398034;
    /**
     * 输入该神经元应该输入的浮点特征参数
     */
    private float parameter;
    /**
     * 是否为学习状态,true为训练状态（只训练，无输出），false为输出状态（只进行输出）
     */
    private boolean isStudy;
    /**
     * 训练期望，其主键为输出神经元对应的神经元ID，其值为该输出神经元ID对应的期望值。该参数在输出状态下应为null，学习状态下必须存在
     * 若某输出神经元ID，无法在训练期望的主键中，找到属于自己ID的值，则默认本次训练，该输出神经元期望为0
     * 神经元ID是每一神经层，根据神经元自然顺序进行自增排序的ID，每一层神经序列都是独立统计，其中每一层ID都是从1开始
     */
    private Map<Integer, Float> E;
    /**
     * 输出回调类，学习状态应为null，输出状态应存在
     */
    private OutBack outBack;
    /**
     * 如果是卷积网络当它为true时，那么在输出回调类中，
     * 三个通道的卷积网络最后一层会额外出发其回调方法void getBackMatrix(Matrix matrix,int id, long eventId)将每个通道的最后一层矩阵输出。
     * 若当它是false则无法输出回调
     */
    private boolean needMatrix;
}
